#ifndef _FUNCTOR_H
#define _FUNCTOR_H

#include <cstdarg>


///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Joseph Mozdzierz								 //
//	Date:		10/17/2014												 //
//	Purpose:	Encapsulates a function									 //
//																		 //
///////////////////////////////////////////////////////////////////////////

template<typename T>
class Functor
{
	T function;

	int num_prams;
public:
	Functor(T function, int num_prams);

	void operator ()(void** prams);
};

template<typename T>
Functor<T>::Functor(T function, int num_prams)
{
	this->function = function;
	this->num_prams = num_prams;
}

template<typename T>
void Functor<T>::operator ()(void** prams)
{
	function(prams);
}

#endif